// 地图功能增强脚本
// 加载完成后执行
document.addEventListener('DOMContentLoaded', function() {
    console.log('🔍 地图功能增强脚本已加载');
    
    // 1. 等待地图初始化完成
    let checkInterval = setInterval(function() {
        // 检查高德地图是否已加载
        if (typeof AMap !== 'undefined' && typeof map !== 'undefined') {
            clearInterval(checkInterval);
            console.log('✅ 地图已初始化，开始增强功能');
            enhanceMapFeatures();
        }
    }, 500);
});

// 增强地图功能
function enhanceMapFeatures() {
    // 2. 添加重新定位按钮
    addRelocateButton();
    
    // 3. 覆盖原始的initLocation函数，启用浏览器定位
    window.initLocation = function() {
        console.log('📍 增强版位置初始化 - 优先使用浏览器定位');
        
        // 防止重复定位
        if (window.isLocating) {
            showError('正在定位中，请稍候...');
            return;
        }
        
        window.isLocating = true;
        showLoading('获取位置信息中...');
        
        // 更新定位按钮状态
        const relocateBtn = document.getElementById('relocateBtn');
        if (relocateBtn) {
            relocateBtn.disabled = true;
            relocateBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> 定位中...';
        }
        
        // 优先尝试浏览器定位
        if (navigator.geolocation) {
            console.log('🔍 尝试浏览器定位...');
            navigator.geolocation.getCurrentPosition(
                function(position) {
                    // 定位成功
                    if (window.ipTimeout) clearTimeout(window.ipTimeout);
                    window.userLocation = {
                        lng: position.coords.longitude,
                        lat: position.coords.latitude
                    };
                    console.log('✅ 浏览器定位成功:', window.userLocation);
                    
                    // 创建自定义的更新位置函数
                    enhancedUpdateUserLocation('浏览器定位');
                }, 
                function(error) {
                    // 定位失败，回退到原始的IP定位或默认位置
                    console.warn('⚠️ 浏览器定位失败:', error.message);
                    useOriginalLocationMethods();
                }, 
                {
                    enableHighAccuracy: true,
                    timeout: 10000,
                    maximumAge: 300000
                }
            );
        } else {
            // 浏览器不支持地理定位，回退到原始方法
            console.warn('⚠️ 浏览器不支持定位');
            useOriginalLocationMethods();
        }
    };
    
    // 4. 增强标记点显示效果
    enhanceMarkers();
    
    // 5. 添加地图点击事件，快速获取坐标
    addMapClickEvent();
    
    console.log('✅ 地图功能增强完成');
}

// 添加重新定位按钮
function addRelocateButton() {
    // 查找筛选区域
    const filterArea = document.querySelector('.container .row.mb-4');
    if (!filterArea) {
        console.warn('未找到筛选区域，无法添加定位按钮');
        return;
    }
    
    // 创建新的列
    const colDiv = document.createElement('div');
    colDiv.className = 'col-lg-2 col-md-3 col-sm-4';
    
    // 添加按钮内容
    colDiv.innerHTML = `
        <div class="mb-3">
            <label class="form-label">位置操作</label>
            <button class="btn btn-primary w-100" onclick="initLocation()" id="relocateBtn">
                <i class="fas fa-location-arrow"></i> 重新定位
            </button>
        </div>
    `;
    
    // 将按钮添加到筛选区域
    filterArea.appendChild(colDiv);
    console.log('✅ 已添加重新定位按钮');
}

// 增强的更新用户位置函数
function enhancedUpdateUserLocation(source) {
    hideLoading();
    window.isLocating = false;
    
    // 恢复定位按钮状态
    const relocateBtn = document.getElementById('relocateBtn');
    if (relocateBtn) {
        relocateBtn.disabled = false;
        relocateBtn.innerHTML = '<i class="fas fa-location-arrow"></i> 重新定位';
    }
    
    console.log('📍 更新用户位置:', window.userLocation, '来源:', source);
    
    // 更新经纬度显示
    if (typeof updateLocationDisplay === 'function') {
        updateLocationDisplay();
    }
    
    // 移动地图中心到用户位置
    if (typeof map !== 'undefined' && window.userLocation) {
        map.setCenter([window.userLocation.lng, window.userLocation.lat]);
        map.setZoom(15);
        
        // 移除旧的用户位置标记
        if (window.userMarker) {
            map.remove(window.userMarker);
        }
        
        // 添加蓝色的"我的位置"标记，使用动画效果
        window.userMarker = new AMap.Marker({
            position: [window.userLocation.lng, window.userLocation.lat],
            map: map,
            icon: new AMap.Icon({
                size: new AMap.Size(30, 40),
                image: 'https://webapi.amap.com/theme/v1.3/markers/n/mark_bs.png', // 蓝色标记
                imageSize: new AMap.Size(30, 40)
            }),
            title: '我的位置',
            offset: new AMap.Pixel(-15, -40),
            zIndex: 999,
            animation: 'AMAP_ANIMATION_BOUNCE' // 添加弹跳动画效果
        });
        
        // 获取详细地址
        if (window.geocoder) {
            window.geocoder.getAddress([window.userLocation.lng, window.userLocation.lat], function(status, result) {
                if (status === 'complete' && result.info === 'OK') {
                    const address = result.regeocode.formattedAddress;
                    console.log('✅ 当前位置地址:', address);
                    showSuccess('📍 定位成功！当前位置: ' + address);
                    window.userMarker.setTitle('我的位置: ' + address);
                    
                    // 更新左侧面板显示
                    const addressEl = document.getElementById('currentAddress');
                    const locationInfoEl = document.getElementById('locationInfo');
                    if (addressEl) addressEl.textContent = address;
                    if (locationInfoEl) locationInfoEl.style.display = 'block';
                } else {
                    console.warn('⚠️ 地址解析失败');
                    showSuccess('📍 定位成功！' + source);
                    const addressEl = document.getElementById('currentAddress');
                    const locationInfoEl = document.getElementById('locationInfo');
                    if (addressEl) addressEl.textContent = source;
                    if (locationInfoEl) locationInfoEl.style.display = 'block';
                }
            });
        } else {
            showSuccess('📍 定位成功！' + source);
            const addressEl = document.getElementById('currentAddress');
            const locationInfoEl = document.getElementById('locationInfo');
            if (addressEl) addressEl.textContent = source;
            if (locationInfoEl) locationInfoEl.style.display = 'block';
        }
        
        // 自动搜索附近活动
        console.log('🔍 自动搜索附近活动...');
        if (typeof searchNearbyActivities === 'function') {
            searchNearbyActivities();
        }
    }
}

// 使用原始的位置获取方法
function useOriginalLocationMethods() {
    // 创建一个临时的IP定位函数
    function tempIPLocation() {
        console.log('🌐 尝试IP定位...');
        
        window.ipTimeout = setTimeout(function() {
            console.warn('⚠️ IP定位超时，使用默认位置');
            hideLoading();
            window.isLocating = false;
            
            // 恢复定位按钮状态
            const relocateBtn = document.getElementById('relocateBtn');
            if (relocateBtn) {
                relocateBtn.disabled = false;
                relocateBtn.innerHTML = '<i class="fas fa-location-arrow"></i> 重新定位';
            }
            
            useDefaultLocation();
        }, 10000); // 10秒超时
        
        try {
            AMap.plugin('AMap.CitySearch', function() {
                const citySearch = new AMap.CitySearch();
                citySearch.getLocalCity(function(status, result) {
                    if (window.ipTimeout) clearTimeout(window.ipTimeout);
                    
                    if (status === 'complete' && result.info === 'OK' && result.city) {
                        console.log('✅ IP定位成功:', result.city);
                        
                        // 获取城市中心点坐标
                        AMap.plugin('AMap.Geocoder', function() {
                            const geo = new AMap.Geocoder();
                            geo.getLocation(result.city, function(status, geoResult) {
                                if (status === 'complete' && geoResult.geocodes && geoResult.geocodes.length > 0) {
                                    const location = geoResult.geocodes[0].location;
                                    window.userLocation = {
                                        lng: location.lng,
                                        lat: location.lat
                                    };
                                    enhancedUpdateUserLocation('IP定位 - ' + result.city);
                                } else {
                                    console.warn('⚠️ IP定位返回数据不完整');
                                    useDefaultLocation();
                                }
                            });
                        });
                    } else {
                        console.warn('❌ IP定位失败:', status, result);
                        useDefaultLocation();
                    }
                });
            });
        } catch (error) {
            if (window.ipTimeout) clearTimeout(window.ipTimeout);
            console.error('❌ IP定位异常:', error);
            hideLoading();
            window.isLocating = false;
            
            // 恢复定位按钮状态
            const relocateBtn = document.getElementById('relocateBtn');
            if (relocateBtn) {
                relocateBtn.disabled = false;
                relocateBtn.innerHTML = '<i class="fas fa-location-arrow"></i> 重新定位';
            }
            
            useDefaultLocation();
        }
    }
    
    // 创建默认位置函数
    function useDefaultLocation() {
        console.log('📍 使用默认位置（北京天安门）');
        window.userLocation = {
            lng: 116.397428,
            lat: 39.90923
        };
        enhancedUpdateUserLocation('默认位置 - 北京');
    }
    
    // 执行IP定位
    tempIPLocation();
}

// 增强标记点显示效果
function enhanceMarkers() {
    if (typeof map === 'undefined') return;
    
    // 尝试加载标记点集群插件
    AMap.plugin(['AMap.MarkerClusterer'], function() {
        console.log('✅ 标记点集群插件已加载');
    });
    
    // 扩展现有函数，增强标记点效果
    const originalDisplayFunction = window.displayNearbyActivities;
    if (typeof originalDisplayFunction === 'function') {
        window.displayNearbyActivities = function(activities) {
            // 调用原始函数
            originalDisplayFunction(activities);
            
            // 添加额外的视觉增强
            if (window.markers && Array.isArray(window.markers)) {
                window.markers.forEach(item => {
                    if (item.marker) {
                        // 添加鼠标悬停效果
                        item.marker.on('mouseover', function() {
                            this.setAnimation('AMAP_ANIMATION_BOUNCE');
                        });
                        
                        // 添加鼠标离开效果
                        item.marker.on('mouseout', function() {
                            this.setAnimation(null);
                        });
                    }
                });
            }
        };
    }
}

// 添加地图点击事件，快速获取坐标
function addMapClickEvent() {
    if (typeof map === 'undefined') return;
    
    // 添加点击事件监听器
    map.on('click', function(e) {
        // 显示坐标信息提示
        const lng = e.lnglat.getLng().toFixed(6);
        const lat = e.lnglat.getLat().toFixed(6);
        
        // 创建临时提示窗口
        const infoWindow = new AMap.InfoWindow({
            content: `
                <div class="p-2" style="min-width: 150px;">
                    <h6 class="mb-1">坐标信息</h6>
                    <p class="mb-0 small"><strong>经度:</strong> ${lng}</p>
                    <p class="mb-0 small"><strong>纬度:</strong> ${lat}</p>
                    <button class="btn btn-sm btn-secondary mt-2" onclick="copyToClipboard('${lng},${lat}')">复制坐标</button>
                </div>
            `,
            position: [lng, lat]
        });
        
        // 打开信息窗口
        infoWindow.open(map, [lng, lat]);
    });
}

// 复制到剪贴板函数
function copyToClipboard(text) {
    navigator.clipboard.writeText(text).then(function() {
        showSuccess('坐标已复制到剪贴板');
    }).catch(function() {
        showError('复制失败，请手动复制');
    });
}

// 简化版显示成功提示
function showSuccess(message) {
    // 优先使用Bootstrap Toast
    if (typeof bootstrap !== 'undefined' && bootstrap.Toast) {
        const toastEl = document.createElement('div');
        toastEl.className = 'toast align-items-center text-white bg-success border-0 position-fixed top-0 end-0 m-3';
        toastEl.role = 'alert';
        toastEl.setAttribute('aria-live', 'assertive');
        toastEl.setAttribute('aria-atomic', 'true');
        
        toastEl.innerHTML = `
            <div class="d-flex">
                <div class="toast-body">
                    <i class="fas fa-check-circle me-2"></i>${message}
                </div>
                <button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast"></button>
            </div>
        `;
        
        document.body.appendChild(toastEl);
        const toast = new bootstrap.Toast(toastEl, { delay: 3000 });
        toast.show();
        
        // 自动移除
        toastEl.addEventListener('hidden.bs.toast', function() {
            this.remove();
        });
    } else {
        // 回退到简单提示
        console.log('Success:', message);
        alert(message);
    }
}

// 简化版显示错误提示
function showError(message) {
    // 优先使用Bootstrap Toast
    if (typeof bootstrap !== 'undefined' && bootstrap.Toast) {
        const toastEl = document.createElement('div');
        toastEl.className = 'toast align-items-center text-white bg-danger border-0 position-fixed top-0 end-0 m-3';
        toastEl.role = 'alert';
        toastEl.setAttribute('aria-live', 'assertive');
        toastEl.setAttribute('aria-atomic', 'true');
        
        toastEl.innerHTML = `
            <div class="d-flex">
                <div class="toast-body">
                    <i class="fas fa-exclamation-circle me-2"></i>${message}
                </div>
                <button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast"></button>
            </div>
        `;
        
        document.body.appendChild(toastEl);
        const toast = new bootstrap.Toast(toastEl, { delay: 5000 });
        toast.show();
        
        // 自动移除
        toastEl.addEventListener('hidden.bs.toast', function() {
            this.remove();
        });
    } else {
        // 回退到简单提示
        console.error('Error:', message);
        alert(message);
    }
}

// 简化版显示加载中
function showLoading(message) {
    const loadingEl = document.getElementById('mapLoading');
    if (loadingEl) {
        const messageEl = loadingEl.querySelector('p');
        if (messageEl) messageEl.textContent = message || '加载中...';
        loadingEl.style.display = 'block';
    }
}

// 简化版隐藏加载中
function hideLoading() {
    const loadingEl = document.getElementById('mapLoading');
    if (loadingEl) {
        loadingEl.style.display = 'none';
    }
}